package com.xz.sanitize.enums;

public interface BaseEnum<T> {
    /**
     * 返回默认枚举值
     */
    T defaultValue();

    /**
     * 根据 type 查找对应的枚举值
     *
     * @param type 查找的键（如 "OPEN" 或 1）
     * @return 匹配的枚举值，如果找不到返回 null
     */
    static <T, R extends BaseEnum<T>> R get(T type, Class<R> enumClass) {
        if (type == null || enumClass == null || !enumClass.isEnum()) {
            return null;
        }
        R[] enumConstants = enumClass.getEnumConstants();
        if (enumConstants == null || enumConstants.length == 0) {
            return null;
        }
        for (R enumValue : enumConstants) {
            if (type.equals(enumValue.defaultValue())) {
                return enumValue;
            }
        }
        return null;
    }
}
